const jwt = require('jsonwebtoken');

const SECRET_KEY = 'eyJzZWNyZXQiOiAiTXh3NFc0eURkU1R0RjZ1RzYxQmx4Z0U0R2FYcXgyWUNQbEZQaXNVZyJ9';  // 要和登录时生成token用的秘钥保持一致

function authAdmin(req, res, next) {
  // 获取请求头中的token，一般是放在Authorization里，格式：Bearer tokenstring
  const authHeader = req.headers['authorization'];
  if (!authHeader) {
    return res.status(401).json({ code: 401, message: '未提供认证token' });
  }

  const token = authHeader.split(' ')[1];
  if (!token) {
    return res.status(401).json({ code: 401, message: '无效的认证token' });
  }

  try {
    const payload = jwt.verify(token, SECRET_KEY);
    if (payload.role !== 'admin') {
      return res.status(403).json({ code: 403, message: '无权限访问' });
    }
    // 可以把用户信息挂到req，后续接口需要用
    req.user = payload;
    next();
  } catch (error) {
    return res.status(401).json({ code: 401, message: '认证失败，token无效或过期' });
  }
}

module.exports = authAdmin;
